package com.arpa.ntocc.common.service;

import com.arpa.ntocc.common.domain.dto.UserLoginCreateDTO;
import com.arpa.ntocc.common.domain.dto.UserLoginSearchDTO;
import com.arpa.ntocc.common.domain.entity.UserLogin;
import com.arpa.ntocc.common.domain.vo.UserLoginVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 登录账号表 服务类
 * </p>
 *
 * @author LEO
 * @since 2019-08-02
 */
public interface IUserLoginService extends IService<UserLogin> {

    UserLogin getUserLoginByUserLoginId(String userLoginId);


    /**
     * 登录账号列表
     * <p>
     * 1、用于后台账号管理列表
     *
     * @param searchDTO
     * @return
     * @author 刘秀荣
     */
    List<UserLoginVO> queryList(UserLoginSearchDTO searchDTO);


    /**
     * 登录账号列表,包含总数
     *
     * @param searchDTO
     * @return
     */
    UserLoginVO queryListSum(UserLoginSearchDTO searchDTO);


    /**
     * 保存用户账号信息
     * 同时保存用户角色
     *
     * @param entity
     * @return
     */
    boolean save(UserLoginCreateDTO entity);

    /**
     * 修改登录账号信息
     *
     * @param entity
     * @return
     */
    boolean update(UserLoginCreateDTO entity);


    /**
     * 批量删除登录账号
     * 删除账号的同时删除校色信息
     *
     * @param codes
     */
    void batchRemove(List<String> codes);

    /**
     * 删除登录账号
     * 删除账号的同时删除角色信息
     *
     * @param userLoginId
     */
    void removeByUserLoginId(String userLoginId);

    /**
     * 获取账号信息
     *
     * @param userLoginId
     * @return
     */
    UserLoginVO getByUserLoginId(String userLoginId);

    /**
     * 获取用户登录选择的仓库信息
     * @param authorizeDataCode 登录选择的仓库标识
     * @return
     */
    Map<String,Object> getLoginChooseWarehouseInfo(String authorizeDataCode);
    /**
     * 获取用户登录选择的货主信息
     * @param authorizeDataCode 登录选择的货主标识
     * @return
     */
    Map<String,Object> getLoginChooseShipmentInfo(String authorizeDataCode);

    /**
     * 获取授权给用户的仓库列表
     * @param warehouseCodes
     * @return
     */
    List<Map<String, Object>> getUserloginWarehouse(List<String> warehouseCodes);

    /**
     * 获取授权给用户的货主列表
     * @param shipmentCodes
     * @return
     */
    List<Map<String, Object>> getUserloginShipment(List<String> shipmentCodes);
}
